<?php 
class Descuento extends AppModel {
    var $name = 'Descuento';
 
    var $validate = array(
        'titulo' => array(            
            // solo letras, espacios y numeros enteros - i:case insensitive
            // longitud: minimo 3 maximo 200 caracteres
            'rule'    => 'notEmpty',
            'allowEmpty' => false,
            'message' => 'La descripción no es válida'
        ),
        
        'descripcion' => array(            
            // solo letras, espacios y numeros enteros - i:case insensitive
            // longitud: minimo 3 maximo 200 caracteres
            'rule'    => 'notEmpty',
            'allowEmpty' => false,
            'message' => 'La descripción no es válida'
        ),
        'codigo' => array(
            'regla1' => array( 
                // solo letras y numeros enteros - i: case insensitive
                // longitud: minimo 1 maximo 10 caracteres
                'rule'    => '/^[a-z0-9]{0,10}$/i',
                'allowEmpty' => false,
                'message' => 'El código no es un valor válido.'
            ),
            'regla2' => array( 
                // custom rule para controlar duplicados
                'rule' => array('existeOtro'),
                'message' => 'El código usado ya existe.'
            ),
            'regla3' => array( 
                // longitud: minimo 6 maximo 10 caracteres
                'rule'    => '/^[\s\S]{6,10}$/',
                'message' => 'Debe tener al menos 6 caracteres y máximo 10.'
            ),
        ),
        'fecha_desde' => array(      
            'regla1' => array( 
            // custom rule para validar fechas ingresadas
                'rule' => array('validarFechas'),
                'allowEmpty' => false,
                'message' => 'La fecha de inicio es mayor a la final'
            ),
        ),
        'fecha_hasta' => array(    
            'regla1' => array( 
                // custom rule para validar fechas ingresadas
                'rule' => array('validarFechas'),
                'message' => 'La fecha de fin es mayor a la inicial'
            ),
        ),
        'porcentaje' => array(            
            // solo letras, espacios y numeros enteros - i:case insensitive
            // longitud: minimo 3 maximo 200 caracteres            
            'rule'    => 'notEmpty',
            'allowEmpty' => false,
            'message' => 'Debe seleccionarse un porcentaje para '
        ),
    );
           
    public function existeOtro() {
        // busca que no haya otro id con el mismo campo codigo
        $filtro_dup = array('Descuento.id !=' => $this->id,             
                            'Descuento.codigo' => $this->data['Descuento']['codigo']);
        $cantExistentes = $this->find('count', array(
            'conditions' => $filtro_dup,
            'recursive' => -1
        ));
        return $cantExistentes == 0;
    }   
    
    public function validarFechas() {
        // busca que la fecha de inicio no sea mayor que la de fin
        if(!empty($this->data['Descuento']['fecha_hasta'])){
            if(date('Y-m-d',strtotime($this->data['Descuento']['fecha_desde'])) <= date('Y-m-d',strtotime($this->data['Descuento']['fecha_hasta']))) {
                return -1;
            }
        }
        return 0;
    }   
}
?>